package com.cbgolf.oa.util;

import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;

/**
 *
 * @author lq
 * @date 2016/11/13
 */
public class ImageLoaderUtil {

  private ImageLoaderUtil() {

  }

//  public void setImageLoaderConfig(Context context) {
//    File cacheDir = StorageUtils.getCacheDirectory(context);  //缓存文件夹路径
//    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
//        .threadPoolSize(3) // default  线程池内加载的数量
//        .denyCacheImageMultipleSizesInMemory()
//        .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
//        .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
////                .diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定义缓存路径
//        .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值
//        // default为使用HASHCODE对UIL进行加密命名， 还可以用MD5(new Md5FileNameGenerator())加密
//        .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
//        .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
//        .build(); //开始构建
//  }

  public static void clearMemoryCache() {
    ImageLoader.getInstance().clearMemoryCache();  // 清除内存缓存
  }

  public static void clearDiskCache() {
    ImageLoader.getInstance().clearDiskCache();  // 清除本地缓存
  }

  public static ImageLoader getImageLoader() {
    return Loader.imageLoader;
  }

  public static DisplayImageOptions getOptions() {
    return Loader.options;
  }

  public static DisplayImageOptions getOptions(int defaulDrawable) {
    return Loader.getOptions(defaulDrawable);
  }

  public static class Loader {

    public static ImageLoader imageLoader = ImageLoader.getInstance();
    public static DisplayImageOptions options = new DisplayImageOptions.Builder()
//                .showImageOnLoading(R.drawable.teetime_banner) // 设置图片下载期间显示的图片
        .showImageForEmptyUri(new ColorDrawable(0xf2f2f2)) // 设置图片Uri为空或是错误的时候显示的图片
        .showImageOnFail(new ColorDrawable(0xf2f2f2)) // 设置图片加载或解码过程中发生错误显示的图片
        .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
        .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中
        .imageScaleType(ImageScaleType.EXACTLY) // default 设置图片以如何的编码方式显示
        .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
        .build();
    public static DisplayImageOptions options2;

    public static DisplayImageOptions getOptions(int defaulDrawable) {
      if (null == options2) {
        options2 = new DisplayImageOptions.Builder()
//                .showImageOnLoading(defaulDrawable) // 设置图片下载期间显示的图片
            .showImageForEmptyUri(defaulDrawable) // 设置图片Uri为空或是错误的时候显示的图片
            .showImageOnFail(defaulDrawable) // 设置图片加载或解码过程中发生错误显示的图片
            .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
            .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中
            .imageScaleType(ImageScaleType.EXACTLY) // default 设置图片以如何的编码方式显示
            .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
            .build();
      }
      return options2;
    }
  }
}

